القرص المرن و استعماله عن طريق ال BIOS

بسم الله الرحمن الرحيم
القرص المرن هو دعامة تخزين مغنطيسية من أوائل دعائم التخزين، أخترع عام 1970 من
طرف شركة IBM . هو موجود بأحجام و سعات تخزين مختلفة، أشهرها و أكثرها استعمالا
القرص المرن 3.5 بوصة ذي السعة 1.44 ميقا بايت. يتكون القرص المرن من غلاف خارجي
يحفظ بداخله قرص بلاستيكي مكسو بمادة ممغنطة سلبا أو إيجابا على الوجين أو على وجه
واحد فقط. هذه المادة الممغنطة تسمح بتخزين و حفظ البيانات الرقمية 0 و 1 على شكل
أقطاب سالبة و موجبة.
لقراءة أو كتابة هذه المعلومات نستعمل جهاز قارئ القرص المرن الذي يمتلك رأس
قراءة و كتابة أو رأسين قراءة و كتابة خاص بكل وجه.
في حالة القراءة: تقوم الرأس باسترجاع المعلومات عن طريق التحريض المغنطيسي. أي أنها
تتأثر بالمجال المغنطيسي المولد من سطح القرص المرن.
في حالة الكتابة: تقوم الرأس بكتابة المعلومات عن طريق المغنطة. أي أنها تقوم
بتغيير الأقطاب السالبة و الموجبة.
تقسيم القرص المرن :
يقسم القرص المرن إلى مسارات حلقية و قطاعات زاوية ( على شكل زاوية)، أنظر الشكل أدناه.

ترقم المسارات من 0 إلى ن ،حيث أن العدد 0 يمثل المسار الخارجي ، و العدد ن يمثل
أقصى عدد للمسارات على وجه واحد ( هنالك 80 مسار في قرص مرن 3.5 بوصة على كل وجه ).
ترقم القطاعات من 1 إلى ي حيث أن العدد ي يمثل أقصى عدد للقطاعات في كل مسار (
هنالك 18 قطاع في قرص مرن 3.5 بوصة في كل مسار).
هذه الطريقة في التقسيم تسهل عمل قارئ القرص المرن على تحديد مكان المعلومات المراد
قراءتها على القرص. حيث أن تقاطع مسار حلقي مع قطاع زاوي يكون قطاع نسبي، يقصد
بنسبي هنا أن عنوان القطاع مكون من رقم الوجه ( 0 أو 1)، رقم المسار و رقم القطاع
الزاوي.
القطاع النسبي ذي سعة 512 بايت و هو أصغر وحدة يمكن قراءتها أو كتابتها على القرص
المرن. هذا يعني أنه لا يمكن كتابة أو قراءة عدد أقل من 512 بايت بل يجب كتابة أو
قراءة قطاع أو عدد محدد من القطاعات فقط.
في باقي هذا الدرس سنستخدم كلمة قطاع للدلالة على قطاع نسبي.
حساب سعة القرص المرن :
يمكن حساب سعة قرص مرن بواسطة المعادلة التالية :
|
سعة القرص المرن = عدد الأوجه × عدد المسارات على كل وجه × عدد القطاعات في كل مسار × سعة القطاع |
مثال:
سعة قرص مرن 3.5 بوصة ذي سعة 1.44 ميقا بايت
تحسب هكذا :
السعة = 2 × 80 × 18 × 512 = 1474560 بايت = 1.44 ميقا بايت.
يمكن حساب عدد القطاعات في القرص المرن بواسطة المعادلة السابقة مع نزع العامل
سعة
القطاع :
|
عدد القطاعات في القرص المرن = عدد الأوجه × عدد المسارات على كل وجه × عدد القطاعات في كل مسار |
مثال:
عدد قطاعات قرص مرن 3.5 بوصة ذي سعة 1.44 ميقا بايت تحسب
هكذا :
عدد القطاعات = 2 × 80 × 18 = 2880 قطاع .
استخدام القرص المرن بواسطة ال BIOS :
ال BIOS يمنح المبرمج واجهة برمجية سهلة كي يقرأ أو يكتب على القرص المرن. و هذا باستعمال الانقطاع 0x13 و وظائفه الفرعية. أهم هذه الوظائف هي :
وظيفة إعادة تهيئة القرص المرن :
هذه الوظيفة تقوم بإعادة تهيئة قارئات القرص المرن. يستحسن مناداتها عقب كل عملية قراءة أو كتابة انتهت بخطأ.
|
محتوى السجلات عند مناداة الانقطاع |
|
|
الوصف |
السجل |
|
رقم الوظيفة و هو 0. |
AH = 00h |
|
رقم قارئ القرص المرن. قيمته لا تهم ، سواء كانت 0 أو 1 لأن عملية إعادة التهيئة تطبق على جميع قارئات القرص المرن الموجودة. |
0 أو 1 = DL |
|
النتائج |
|
|
الوصف |
السجل |
|
العملية ناجحة ، في هذه الحالة AH = 00h . |
Flag Carry = 0 |
|
العملية فاشلة ، في هذه الحالة AH = رمز الخطأ . |
Flag Carry = 1 |
محتوى السجلات BX, CX, DX, SI, DI, BP و سجلات أقسام الذاكرة SS,CS و DS لا يتغير بهذه الوظيفة. أما السجلات المتبقية فيمكن أن يتغير محتواها.
وظيفة قراءة قطاع أو عدة قطاعات :
هذه الوظيفة تقوم بقراءة قطاع أو مجموعة قطاعات من القرص المرن و نقـلها إلى مكان في الذاكرة المركزية.
|
محتوى السجلات عند مناداة الانقطاع |
|
|
الوصف |
السجل |
|
رقم الوظيفة و هو 2. |
AH = 02h |
|
رقم قارئ القرص المرن. |
0 أو 1 = DL |
|
رقم وجه القرص المرن ( الوجه 0 أو الوجه 1) |
0 أو 1 = DH |
|
رقم المسار. |
CH |
|
رقم القطاع داخل المسار. |
CL |
|
عدد القطاعات المراد قراءتها. ( اقرأ الملاحظة ) |
AL |
|
عنوان قسم الذاكرة المركزية المراد نقل المعلومات إليها. |
ES |
|
قيمة الانتقال داخل قسم الذاكرة المركزية. |
BX |
|
النتائج |
|
|
الوصف |
السجل |
|
العملية ناجحة ، في هذه الحالة AH = 00h . |
Flag Carry = 0 |
|
العملية فاشلة ، في هذه الحالة AH = رمز الخطأ . |
Flag Carry = 1 |
محتوى السجلات BX, CX, DX, SI, DI, BP و سجلات أقسام الذاكرة لا يتغير بهذه الوظيفة. أما السجلات المتبقية فيمكن أن يتغير محتواها.
وظيفة كتابة قطاع أو عدة قطاعات :
هذه الوظيفة تقوم بكتابة قطاع أو مجموعة قطاعات على القرص المرن ، المعلومات المكتوبة تستخرج من مكان في الذاكرة المركزية.
|
محتوى السجلات عند مناداة الانقطاع |
|
|
الوصف |
السجل |
|
رقم الوظيفة و هو 3. |
AH = 03h |
|
رقم قارئ القرص المرن. |
0 أو 1 = DL |
|
رقم وجه القرص المرن ( الوجه 0 أو الوجه 1) |
0 أو 1 = DH |
|
رقم المسار. |
CH |
|
رقم القطاع داخل المسار. |
CL |
|
عدد القطاعات المراد كتابتها. ( اقرأ الملاحظة ) |
AL |
|
عنوان قسم الذاكرة المركزية المراد نقل المعلومات منها. |
ES |
|
قيمة الانتقال داخل قسم الذاكرة المركزية. |
BX |
|
النتائج |
|
|
الوصف |
السجل |
|
العملية ناجحة ، في هذه الحالة AH = 00h . |
Flag Carry = 0 |
|
العملية فاشلة ، في هذه الحالة AH = رمز الخطأ . |
Flag Carry = 1 |
محتوى السجلات BX, CX, DX, SI, DI, BP و سجلات أقسام الذاكرة لا يتغير بهذه الوظيفة. أما السجلات المتبقية فيمكن أن يتغير محتواها.
رموز الأخطاء:
هذه هي رموز الأخطاء التي يعيدها ال BIOS بعد مناداة الوظائف السابقة و فشلها. يقوم ال BIOS بر فع راية الباقي ( Carry FLag ) و وضع رمز الخطأ في السجل AH.
|
رمز الخطأ |
الوصف |
| 01h | رقم الوظيفة غير مسموح أو القارئ المطلوب غير موجود. |
| 02h | لم يتم إيجاد علامة العنونة على القرص المرن. |
| 04h | لم يتم إيجاد القطاع. |
| 05h | خطأ عند محاولة إعادة تهيئة القارئ. |
| 07h | خطأ عند محاولة تهيئة القارئ. |
| 09h | خطأ عند نقل المعلومات بواسطة DMA. تخطي حدود قسم في الذاكرة المركزية. |
| 0Ah | قطاع فاسد. |
| 10h | خطأ في القراءة. |
| 11h | خطأ في القراءة مصحح بال ECC. |
| 20h | قارئ القرص المرن فاسد. |
| 40h | عملية البحث عن القطاع فشلت. |
| 80h | القارئ لا يستجيب . انتهاء مدة الانتظار بدون رد من قارئ القرص المرن. |
| AAh | القارئ ليس مستعد. |
| CCh | خطأ في الكتابة. |
مثال تطبيقي:
هذا البرنامج الصغير مكتوب بصيغة المجمع NASM ، يقوم بقراءة قطاع الانطلاق ( القطاع 1 من المسار 0 على الوجه 0 ) و وضعه في الذاكرة المركزية.
|
|
:read_sector |
ملاحظات:
هذا العدد محدود . حيث أن هذه العملية تسمح
بقراءة أو كتابة قطاعات متتابعة من نفس
المسار و على نفس الوجه.
فمثلا إذا كان رقم القطاع الأول هو 1 فعدد القطاعات المسموح قراءتها هو 18.
و إذا كان رقم القطاع الأول هو 5 فعدد القطاعات المسموح قراءتها هو 14.
القاعدة العامة هي :
|
عدد القطاعات المسموح قراءتها = عدد القطاعات في المسار - ( رقم أول قطاع - 1 ) |
المصطلحات:
| English | العربية | Français |
| sector | قطاع | secteur |
| track | مسار | piste |
| floppy | قرص مرن | disquette |
| interrupt | انقطاع | interruption |
| DMA | وحدة الدخول المباشر للذاكرة المركزية | DMA |
|
الكاتب : مراد حمود |
التاريخ : 15/11/2004 |